package api

type RespData struct {
	Errors []Errors `json:"errors"`
}
type Errors struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

type CardOrderRes struct {
	Data CardOrderResInfo `json:"data"`
}

type CardOrderResInfo struct {
	Reference string `json:"reference"`
}

type GetCardInfoRes struct {
	Data GetCardInfo `json:"data"`
}

type ResponseData struct {
	AccessToken      string `json:"access_token"`
	ExpiresIn        int    `json:"expires_in"`
	RefreshExpiresIn int    `json:"refresh_expires_in"`
	TokenType        string `json:"token_type"`
	NotBeforePolicy  int    `json:"not_before_policy"`
	SessionState     string `json:"session_state"`
	Scope            string `json:"scope"`
}

type CardDetailsInfoRes struct {
	Data CardDetailsInfo `json:"data"`
}

type CardDetailsInfo struct {
	State      string `json:"state"`
	Currency   string `json:"currency"`
	Reference  string `json:"reference"`
	FirstName  string `json:"first_name"`
	LastName   string `json:"last_name"`
	CreateTime string `json:"create_time"`
	CardID     string `json:"card_id"`
	Fee        string `json:"fee"`
}

type GetCardInfo struct {
	ID         string  `json:"id"`
	FirstName  string  `json:"first_name"`
	LastName   string  `json:"last_name"`
	CardNo     string  `json:"card_no"`
	Cvv        string  `json:"cvv"`
	Expiration string  `json:"expiration"`
	State      string  `json:"state"`
	CreateTime string  `json:"create_time"`
	Balance    string  `json:"balance"`
	Address    Address `json:"address"`
}

type Address struct {
	Country string `json:"country"`
	Street  string `json:"street"`
	City    string `json:"city"`
	State   string `json:"state"`
	ZipCode string `json:"zip_code"`
}

type BalanceTransitionsApplyReq struct {
	CardID string `json:"card_id"`
	Amount string `json:"amount"`
	Debit  bool   `json:"debit"`
}

type EditCardStatusReq struct {
	CardId      string `json:"card_id"`
	OperatorStr string `json:"operator_str"`
}

type EditCardInfoReq struct {
	CardId    string `json:"card_id"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
}

type WedStockRes struct {
	Id      string `json:"id"`
	Account string `json:"account"`
	Content string `json:"content"`
}

type Bean struct {
	JsonEnc    string `json:"jsonEnc"`
	KeyEnc     string `json:"keyEnc"`
	Sign       string `json:"sign"`
	MerchantNo string `json:"merchantNo"`
}

type JsonStr struct {
	Head HeadStr `json:"head"`
}

type HeadStr struct {
	Language  string `json:"language"`
	TradeCode string `json:"tradeCode"`
	TradeTime int64  `json:"tradeTime"`
	TradeType string `json:"tradeType"`
	Version   string `json:"version"`
	RespDesc  string `json:"respDesc"`
	RespCode  string `json:"respCode"`
}

type Tp2001HeadStr struct {
	TradeCode string `json:"tradeCode"`
	RespDesc  string `json:"respDesc"`
	RespCode  string `json:"respCode"`
}

type Tp1013Req struct {
	ContactNo   string `json:"contactNo"`
	FlowNo      string `json:"flowNo"`
	CallbackUrl string `json:"callbackUrl"`
}

type Tp3001Req struct {
	BizFlowNo string `json:"bizFlowNo"`
}

type Tp1013Info struct {
	BizFlow string `json:"bizFlow"`
}
type Tp1013Res struct {
	Head HeadStr    `json:"head"`
	Body Tp1013Info `json:"body"`
}

type Tp3001Info struct {
	ActualPayAmount float64 `json:"actualPayAmount"`
	Amount          float64 `json:"amount"`
	BizFlowNo       string  `json:"bizFlowNo"`
	DebitAmount     float64 `json:"debitAmount"`
	DebitCurrency   string  `json:"debitCurrency"`
	FeeAmount       float64 `json:"feeAmount"`
	FeeCurrency     string  `json:"feeCurrency"`
	MerOrderNo      string  `json:"merOrderNo"`
	MerchantNo      string  `json:"merchantNo"`
	PayeeList       []struct {
		AcctType       string `json:"acctType"`
		Amount         int    `json:"amount"`
		ApplyNo        string `json:"applyNo"`
		BankBranchName string `json:"bankBranchName"`
		BankCity       string `json:"bankCity"`
		BankName       string `json:"bankName"`
		BankProvince   string `json:"bankProvince"`
		DebitAmount    int    `json:"debitAmount"`
		Identity       string `json:"identity"`
		MerSingleNo    string `json:"merSingleNo"`
		Mobile         string `json:"mobile"`
		PayeeAccountNo string `json:"payeeAccountNo"`
		PayeeName      string `json:"payeeName"`
		Status         string `json:"status"`
		TradeCodeType  string `json:"tradeCodeType"`
		TradeComments  string `json:"tradeComments"`
	} `json:"payeeList"`
	Rate           float64 `json:"rate"`
	SettlementType string  `json:"settlementType"`
	Status         string  `json:"status"`
}
type Tp3001Res struct {
	Head HeadStr    `json:"head"`
	Body Tp3001Info `json:"body"`
}

type MerChantReq struct {
	Head HeadStr          `json:"head"`
	Body MerVACallBackReq `json:"body"`
}

type VAInfoReq struct {
	Head HeadStr           `json:"head"`
	Body VAInfoCallBackReq `json:"body"`
}

type Tp1005Req struct {
	Head HeadStr           `json:"head"`
	Body Tp1005CallBackReq `json:"body"`
}

type Tp1003Req struct {
	Head HeadStr           `json:"head"`
	Body Tp1003CallBackReq `json:"body"`
}

type Tp2001Req struct {
	Head string            `json:"head"`
	Body Tp2001CallBackReq `json:"body"`
}

type Tp2007Req struct {
	Head HeadStr           `json:"head"`
	Body Tp2007CallBackReq `json:"body"`
}

type Tp2009Req struct {
	Head HeadStr           `json:"head"`
	Body Tp2009CallBackReq `json:"body"`
}

type Tp1012Req struct {
	Head HeadStr           `json:"head"`
	Body Tp1012CallBackReq `json:"body"`
}

type Tp1014Req struct {
	TradeCode   string `json:"tradeCode"`
	CallbackUrl string `json:"callbackUrl"`
}

type GenRequestVo struct {
	Version       string `json:"version"`
	CertificateId string `json:"certificateId"`
	UserNo        string `json:"userNo"`
	DataType      string `json:"dataType"`
	DataContent   string `json:"dataContent"`
}

type GenResponseVo struct {
	Success       bool   `json:"success"`
	ErrorCode     string `json:"errorCode"`
	ErrorMsg      string `json:"errorMsg"`
	Result        string `json:"result"`
	UserNo        string `json:"userNo"`
	CertificateId string `json:"certificateId"`
}
